package com.dews.train.domain.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.dews.common.converter.MyFieldTypeHandler;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

import java.util.Date;
import java.util.List;


/**
 * 方案教学计划对象 dews_program_teach_plan
 *
 * @author qingfeng
 * @date 2024-12-22
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString
@TableName(value = "dews_program_teach_plan", autoResultMap = true)
public class ProgramTeachPlan {
    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 方案ID
     */
    @TableField("program_id")
    private Integer programId;

    /**
     * 课程Id
     */
    @TableField("course_id")
    private Integer courseId;

    /**
     * 课程平台
     */
    @TableField("course_platform")
    private String coursePlatform;

    /**
     * 课程平台总学分
     */
    @TableField("course_platform_credit")
    private Double coursePlatformCredit;

    /**
     * 课程主模块
     */
    @TableField("course_main_module")
    private String courseMainModule;

    /**
     * 课程主模块总学分
     */
    @TableField("course_main_module_credit")
    private Double courseMainModuleCredit;

    /**
     * 课程子模块
     */
    @TableField("course_children_module")
    private String courseChildrenModule;

    /**
     * 修读要求
     */
    @TableField("study_require")
    private String studyRequire;

    /**
     * 修读要求总学分
     */
    @TableField("study_require_credit")
    private Double studyRequireCredit;

    /**
     * 课程学分
     */
    @TableField("credit")
    private Double credit;

    /**
     * 总学时
     */
    @TableField("total_hours")
    private Double totalHours;

    /**
     * 总学时单位，默认为空
     */
    @TableField("total_hours_unit")
    private String totalHoursUnit;

    /**
     * 理论学时
     */
    @TableField("theory_hours")
    private Double theoryHours;

    /**
     * 实验学时
     */
    @TableField("experiment_hours")
    private Double experimentHours;

    /**
     * 实验学时单位，默认为空
     */
    @TableField("experiment_hours_unit")
    private String experimentHoursUnit;

    /**
     * 其他学时
     */
    @TableField("other_hours")
    private Double otherHours;

    /**
     * 开课学期，可以是多个学期
     *
     * TODO 这里后面需要调整为集合存储多个学期
     */
    @TableField(value = "semester", typeHandler = MyFieldTypeHandler.class)
    private List<Integer> semester;

    /**
     * 是否启用：0-未启用  1-启用
     */
    @TableField("is_enable")
    private Integer isEnable;

    /**
     * 创建时间
     */
    @TableField("create_time")
    private Date createTime;

    /**
     * 修改时间
     */
    @TableField("update_time")
    private Date updateTime;


}
